import request from '@/utils/request'

/**
 * 获取员工列表的API函数
 *
 * 此函数通过发送GET请求到'/sys/user'端点，获取分页的员工列表数据
 * 可以根据当前页码、每页条数、搜索关键字和部门ID来筛选结果
 *
 * @param {Object} params - 包含请求参数的对象
 * @param {number} params.page - 当前页码
 * @param {number} params.pagesize - 每页条数
 * @param {string} [params.keyword] - 搜索关键字, 可选
 * @param {number} params.departmentId - 部门id
 *
 * @returns {Promise} - 返回请求promise对象，包含员工列表数据
 */
export function getEmployeeListAPI(data) {
  return request.get('/sys/user', {
    params: data
  })
}

/**
 * 添加员工
 *
 * @param {Object} data 员工信息
 * @param {string} data.username 用户名
 * @param {string} data.mobile 手机号
 * @param {(1|2)} data.formOfEmployment 聘用形式 1正式 2非正式
 * @param {string} data.workNumber 工号
 * @param {string} data.departmentId 部门id
 * @param {string} data.timeOfEntry 入职时间
 * @param {string} data.correctionTime 转正时间
 * @param {string} [data.staffPhoto] 头像信息
 *
 * @returns {Promise}
 */
export function addEmployeeAPI(data) {
  return request.post('/sys/user', data)
}

/**
 * 修改员工信息
 *
 * @param {Object} data 员工信息
 * @param {string} data.id 员工id
 * @param {string} data.username 用户名
 * @param {string} data.mobile 手机号
 * @param {(1|2)} data.formOfEmployment 聘用形式 1正式 2非正式
 * @param {string} data.workNumber 工号
 * @param {string} data.departmentId 部门id
 * @param {string} data.timeOfEntry 入职时间
 * @param {string} data.correctionTime 转正时间
 * @param {string} [data.staffPhoto] 头像信息
 *
 * @returns {Promise}
 */
export function updateEmployeeAPI(data) {
  return request.put(`/sys/user/${data.id}`, data)
}

/**
 * 删除员工
 *
 * @param {string} id 员工id
 *
 * @returns {Promise}
 */
export function deleteEmployeeAPI(id) {
  return request.delete(`/sys/user/${id}`)
}

/**
 * 获取员工信息
 *
 * @param {string} id 员工id
 *
 * @returns {Promise}
 */
export function getEmployeeDetailAPI(id) {
  return request.get(`/sys/user/${id}`)
}

/**
 * 导出员工excel表格
 *
 * @returns {Promise}
 */
export function exportEmployeeExcelAPI() {
  return request({
    url: '/sys/user/export',
    method: 'get',
    responseType: 'blob',
    timeout: 0
  })
}

/**
 * 下载员工excel模版
 *
 * @returns {Promise}
 */
export function downloadExcelTemplateAPI() {
  return request({
    url: '/sys/user/import/template',
    method: 'get',
    responseType: 'blob'
  })
}

/**
 * 导入员工excel
 *
 * @param {FormData} data  上传的文件，FormData格式
 *
 * @returns {Promise}
 */
export function importEmployeeExcelAPI(data) {
  return request({
    url: '/sys/user/import',
    method: 'post',
    data
  })
}

/**
 * 分配角色给员工
 *
 * @param {string} id - 被分配的员工id
 * @param {string[]} roleIds - 分配给员工的角色id数组
 *
 * @returns {Promise}
 */
export function assignRolesAPI({ id, roleIds }) {
  return request.put('/sys/user/assignRoles', {
    id,
    roleIds
  })
}
